Typestate Verification: Abstraction Techniques and Complexity Results
نویسندگان
چکیده
We consider the problem of typestate verification for shallow programs; i.e., programs where pointers from program variables to heap-allocated objects are allowed, but where heap-allocated objects may not themselves contain pointers. We prove a number of results relating the complexity of verification to the nature of the finite state machine used to specify the property. Some properties are shown to be intractable, but others which appear to be quite similar admit polynomial-time verification algorithms. Our results serve to provide insight into the inherent complexity of important classes of verification problems. In addition, the program abstractions used for the polynomial-time verification algorithms may be of independent interest. In solving a problem of this sort, the grand thing is to be able to reason backward. ... In the everyday affairs of life it is more useful to reason forward. –Sir Arthur Conan Doyle, A Study in Scarlet.
منابع مشابه
Verification of Snapshotable Trees Using Access Permissions and Typestate
We use access permissions and typestate to specify and verify a Java library that implements snapshotable search trees, as well as some client code. We formalize our approach in the Plural tool, a sound modular typestate checking tool. We describe the challenges to verifying snapshotable trees in Plural, give an abstract interface specification against which we verify the client code, provide a...
متن کاملConsidering Typestate Verification for Quantified Event Automata
This paper discusses how the existing static analyses developed for typestate properties may be extended to a more expressive class of properties expressible by a specification formalism originally developed for runtime verification. The notion of typestate was introduced as a refinement of the notion of type and captures the allowed operations in certain contexts (states) as a subset of those ...
متن کاملSet Interfaces for Generalized Typestate and Data Structure Consistency Verification
Typestate systems allow the type of an object to change during its lifetime in the computation. Unlike standard type systems, they can enforce safety properties that depend on changing object states. We present a new, generalized formulation of typestate that models the typestate of an object through membership in abstract sets. This abstract set formulation enables developers to reason about c...
متن کاملExtending Typestate Checking Using Conditional Liveness Analysis
We present a practical extension to typestate checking which is capable of proving programs free of uninitialized variable errors even when these programs contain conditionally initialized variables where the initialization of a variable depends upon the equality of one or more ‘@tagn variables to a constant. The user need not predeclare the relationship between a conditionally initialized vari...
متن کاملThe SAFE Experience
We present an overview of the techniques developed under the SAFE project. The goal of SAFE was to create a practical lightweight framework to verify simple properties of realistic Java applications. The work on SAFE covered a lot of ground, starting from typestate verification techniques [18, 19], through inference of typestate specifications [34, 35], checking for absence of null derefences [...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- Sci. Comput. Program.
دوره 58 شماره
صفحات -
تاریخ انتشار 2003